package co.edu.usbcali.scrum.dataaccess.daoFactory;

import co.edu.usbcali.scrum.dataaccess.dao.*;


/**
 * Factory for Data Access Objects Strategy The DAO pattern can be made highly flexible
 * by adopting the Abstract Factory [GoF] and the Factory Method [GoF] patterns.
 * When the underlying storage is not subject to change from one implementation to another,
 * this strategy can be implemented using the Factory Method pattern to produce a number of DAOs needed by the application.
 * This class is a Factory Method pattern
 *
 * @author Zathura Code Generator http://code.google.com/p/zathura
 */
public class XMLHibernateDaoFactory {
    private static XMLHibernateDaoFactory instance = null;

    private XMLHibernateDaoFactory() {
    }

    /**
    *
    * @return HibernateDaoFactory
    */
    public static XMLHibernateDaoFactory getInstance() {
        if (instance == null) {
            instance = new XMLHibernateDaoFactory();
        }

        return instance;
    }

    /**
    * This method instantiates the IActividadesDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IActividadesDAO implementation
    */
    public IActividadesDAO getActividadesDAO() {
        return new ActividadesDAO();
    }

    /**
    * This method instantiates the IDailysprintDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IDailysprintDAO implementation
    */
    public IDailysprintDAO getDailysprintDAO() {
        return new DailysprintDAO();
    }

    /**
    * This method instantiates the IEmpresaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IEmpresaDAO implementation
    */
    public IEmpresaDAO getEmpresaDAO() {
        return new EmpresaDAO();
    }

    /**
    * This method instantiates the IItemDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IItemDAO implementation
    */
    public IItemDAO getItemDAO() {
        return new ItemDAO();
    }

    /**
    * This method instantiates the IPersonaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IPersonaDAO implementation
    */
    public IPersonaDAO getPersonaDAO() {
        return new PersonaDAO();
    }

    /**
    * This method instantiates the IPersonaRolDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IPersonaRolDAO implementation
    */
    public IPersonaRolDAO getPersonaRolDAO() {
        return new PersonaRolDAO();
    }

    /**
    * This method instantiates the IProductBacklogDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IProductBacklogDAO implementation
    */
    public IProductBacklogDAO getProductBacklogDAO() {
        return new ProductBacklogDAO();
    }

    /**
    * This method instantiates the IProyectoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IProyectoDAO implementation
    */
    public IProyectoDAO getProyectoDAO() {
        return new ProyectoDAO();
    }

    /**
    * This method instantiates the IRevisionDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRevisionDAO implementation
    */
    public IRevisionDAO getRevisionDAO() {
        return new RevisionDAO();
    }

    /**
    * This method instantiates the IRolDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRolDAO implementation
    */
    public IRolDAO getRolDAO() {
        return new RolDAO();
    }

    /**
    * This method instantiates the IRRetroexpectivaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRRetroexpectivaDAO implementation
    */
    public IRRetroexpectivaDAO getRRetroexpectivaDAO() {
        return new RRetroexpectivaDAO();
    }

    /**
    * This method instantiates the ISeguimientoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ISeguimientoDAO implementation
    */
    public ISeguimientoDAO getSeguimientoDAO() {
        return new SeguimientoDAO();
    }

    /**
    * This method instantiates the ISpringitemDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ISpringitemDAO implementation
    */
    public ISpringitemDAO getSpringitemDAO() {
        return new SpringitemDAO();
    }

    /**
    * This method instantiates the ISprintDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ISprintDAO implementation
    */
    public ISprintDAO getSprintDAO() {
        return new SprintDAO();
    }

    /**
    * This method instantiates the ISprintPlaningDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ISprintPlaningDAO implementation
    */
    public ISprintPlaningDAO getSprintPlaningDAO() {
        return new SprintPlaningDAO();
    }
}
